package com.kclm.se.jcf;

public class UseBSTree {

	public static void main(String[] args) {
		BinarySearchTree<Integer> bst = new BinarySearchTree<Integer>();
		//添加元素到二叉排序树中
		bst.add(40);
		bst.add(14);
		bst.add(20);
		bst.add(18);
		bst.add(65);
		bst.add(4);
		bst.add(6);
		bst.add(19);
		bst.add(30);
		bst.add(23);
		System.out.println("BST中元素的个数："+bst.size());
		System.out.println("------------ 前序遍历 ------------");
		bst.preOrder();
		System.out.println("\n------------ 中序遍历 ------------");
		bst.midOrder();
		System.out.println("--------找目标节点----------");
		Integer t = 40;
		Node<Integer> target = bst.findTargetNode(t);
		System.out.printf("目标节 点：%s\n",target);
		
		System.out.println("==========找目标节点的父节点=============");
		Node<Integer> parent = bst.findParentNode(t);
		System.out.printf("节点[%d]的父节点是：[%s]\n",t, parent);
		System.out.println("==========找有左右子节点的树中的最小节点=============");
		Node<Integer> min = bst.findMinNodeFromTree(target.getRight());
		System.out.printf("最小节点：%s\n",min);
		min = bst.findMinNodeFromRight(target);
		System.out.printf("最小节点：%s\n",min);
		
		System.out.printf("-------------- 删除目标节点:%d--------------\n", t);
		bst.remove(t);
		System.out.println("------------ 删除后中序遍历 ------------");
		bst.midOrder();
	}
}
